#define _CRT_SECURE_NO_WARNINGS 1

//class Solution {
//public:
//    int maximumRemovals(string s, string p, vector<int>& removable) {
//        int n1 = s.size(), n2 = p.size();
//        auto check = [&](int k)->bool {
//            string tmp;
//            int hash[n1];
//            memset(hash, 0, sizeof(hash));
//            for (int i = 0; i < k; i++)
//                hash[removable[i]]++;
//            for (int i = 0; i < n1; i++)
//                if (!hash[i])
//                    tmp += s[i];
//            int i = 0, j = 0;
//            for (; i < tmp.size() && j < n2; i++, j++) {
//                while (i < tmp.size() && tmp[i] != p[j])
//                    i++;
//            }
//            return i < tmp.size() || j == n2 && i == tmp.size();
//        };
//        int left = 0, right = removable.size();
//        while (left <= right) {
//            int mid = left + (right - left) / 2;
//            if (check(mid)) left = mid + 1;
//            else right = mid - 1;
//        }
//        return right;
//    }
//};